﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing.Drawing2D;
using System.Drawing;
using System.Text;
using System.Drawing.Imaging;
using Sbook.Shopping;
using System.Reflection;
namespace Sbook
{
    public partial class Captcha : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                if (Request.Form["reload"] == null)
                {
                    LoadCaptcha();
                }
                else
                {
                    Response.Redirect("Captcha.aspx");
                    Response.Write("he");
                }
                
            }
        }

        protected void LoadCaptcha()
        {
            // font cho captcha
            string[] fonts = { "Arial Black", "Time New Roman" };
            // số lượng kí tự của captcha
            const byte LENGTH = 5;
            // chuỗi để lấy các kí tự sẽ sử dụng cho captcha  
            const string chars = "123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijk lmnpqrstuvwxyz";
            // tạo ảnh bitmap.
            using (Bitmap bmp = new Bitmap(150, 40))
            {
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    //// Tạo nền cho ảnh dạng nhiều dấu chấm
                    //HatchBrush brush = new HatchBrush(HatchStyle.DottedDiamond, Color.Green, Color.GreenYellow);
                    //g.FillRegion(brush, g.Clip);
                    // Lưu chuỗi captcha trong quá trình tạo  
                    StringBuilder strCaptcha = new StringBuilder();
                    Random rand = new Random();
                    for (int i = 0; i < LENGTH; i++)
                    {
                        // Lấy kí tự ngẫu nhiên từ mảng chars  
                        string str = chars[rand.Next(chars.Length-1)].ToString();
                        strCaptcha.Append(str);
                        // Tạo font với tên font ngẫu nhiên chọn từ mảng fonts  
                        Font font = new Font(fonts[rand.Next(fonts.Length)], 14, FontStyle.Strikeout | FontStyle.Italic);
                        // Lấy kích thước của kí tự  
                        SizeF size = g.MeasureString(str, font);
                        // Vẽ kí tự đó ra ảnh tại vị trí tăng dần theo i, vị trí top ngẫu nhiên  
                        g.DrawString(str, font,
                        Brushes.Chocolate, i * size.Width +3, (float)size.Height/5);
                        font.Dispose();
                    }
                    // Lưu captcha vào session  
                    //Session["captcha"] = strCaptcha.ToString();
                    SessionCaptcha.Inst.Session = strCaptcha.ToString();
                    Response.ContentType = "image/GIF";
                    bmp.Save(Response.OutputStream, ImageFormat.Gif);

                    // Ghi ảnh trực tiếp ra luồng xuất theo định dạng gif
                    //    Response.ContentType = “image/GIF”;
                    //bmp.Save(Response.OutputStream, ImageFormat.Gif);
                }
            }  
        }

    }
}